home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-10-30 | 8.8 KB | 477 lines | [TEXT/CWIE] |
- { MainWindow.p }
- { Created 10/30/98 1:03 PM by AppMaker }
-
- Unit MainWindow;
- Interface
-
- Uses
- Types,
- Quickdraw,
- Controls,
- Dialogs,
- Events,
- Lists,
- Menus,
- Resources,
- TextEdit,
- ToolUtils,
-
- Add,
- DDocData,
- AMReminderEngine,
- AMReminderDoc,
- AMWindow;
-
- type
- MainWindow = object (AMWindow)
-
- {data members}
- mData: DDocData;
- mLogoHandle: ControlHandle;
- mYearLabel: ControlHandle;
- mRemindersLabelLabel: ControlHandle;
- mRemindersHandle: ControlHandle;
- mAddHandle: ControlHandle;
- mEditHandle: ControlHandle;
- mDeleteHandle: ControlHandle;
-
- {methods}
- Procedure Initialize; Override;
-
- Procedure Open (inDoc: AMReminderDoc;
- inData: DDocData);
- Procedure Close; Override;
-
- Procedure Control (whichControl: ControlHandle;
- whichPart: integer;
- where: Point); Override;
- Procedure MouseIn (where: Point;
- modifiers: integer); Override;
- Procedure TypeIn (charCode: SInt16); Override;
- Procedure ExitCurField; Override;
- Procedure DataChanged (inDataID: longint); Override;
- Procedure Resize; Override;
- Procedure Scroll (newValue: integer;
- oldValue: integer); Override;
-
- Function GetEngine: AMReminderEngine;
-
- Procedure BuildRemindersList (inControl: ControlHandle);
- {$ifc false}
- Procedure UpdateMenus; Override;
- {$endif}
- Function DoCommand (inCommand: longint): Boolean; Override;
-
- Procedure DoUndo;
- Procedure DoCut;
- Procedure DoCopy;
- Procedure DoPaste;
- Procedure DoClear;
- Procedure DoSelectAll;
- Procedure DoShowClipboard;
-
- Procedure DoAddReminder;
- Procedure DoEditReminder;
- Procedure DoDeleteReminder;
- end;
-
- {----------}
- Procedure CreateMainWindow (inDoc: AMReminderDoc;
- inData: DDocData);
-
- {----------}
- Implementation
-
- Uses
- Globals,
- ResourceDefs,
- DoScrap,
- Scrolling,
- ControlUtils,
- Miscellany;
-
- const
- kLogoPicture = 1;
- kYearLabel = 2;
- kRemindersLabelLabel = 3;
- kRemindersList = 4;
- kAddButton = 5;
- kEditButton = 6;
- kDeleteButton = 7;
-
- {----------}
- Procedure CreateMainWindow (
- inDoc: AMReminderDoc;
- inData: DDocData);
- var
- winObj: MainWindow;
- begin
- winObj := nil;
- New (winObj);
-
- if winObj <> nil then begin
- winObj.Initialize;
- winObj.Open (inDoc, inData);
- end;
- end;
-
- {----------}
- Procedure MainWindow.Initialize;
- begin
- Inherited Initialize;
- end;
-
- {----------}
- Function MainWindow.GetEngine: AMReminderEngine;
- begin
- GetEngine := AMReminderEngine (mDoc.mEngine);
- end;
-
- {----------}
- Procedure MainWindow.Open (
- inDoc: AMReminderDoc;
- inData: DDocData);
- var
- window: WindowPtr;
- wftb: Handle;
- errCode: OSErr;
- begin
- mDoc := inDoc;
- mData := inData;
- mData.AddResponder (self);
-
- window := GetNewCWindow (WIND_MainWindow, nil, WindowPtr (-1));
- if inDoc.mEngine.GetFilename <> '' then begin
- SetWTitle (window, inDoc.mEngine.GetFilename);
- end;
- mWindow := window;
- AMReminderDoc (mDoc).mMainWindowPtr := window;
-
- WindowPeek (window)^.windowKind := kAMWindowFlag;
- SetWRefCon (window, ord4 (self));
- SetPort (window);
- SetInfo (window);
-
- wftb := GetResource ('Wftb', WIND_MainWindow);
-
- errCode := CreateRootControl (window, mRootControl);
-
- vScroll := nil;
- hScroll := nil;
-
-
- mLogoHandle := GetNewControl (CNTL_Logo, window);
- SetWindowItemFont (mLogoHandle, wftb, 1);
-
- mYearLabel := GetNewControl (CNTL_Year, window);
- SetWindowItemFont (mYearLabel, wftb, 2);
- SetControlFromTEXT (mYearLabel, TEXT_Year);
-
- mRemindersLabelLabel := GetNewControl (CNTL_RemindersLabel, window);
- SetWindowItemFont (mRemindersLabelLabel, wftb, 3);
- SetControlFromTEXT (mRemindersLabelLabel, TEXT_RemindersLabel);
-
- mRemindersHandle := GetNewControl (CNTL_Reminders, window);
- SetWindowItemFont (mRemindersHandle, wftb, 4);
- BuildRemindersList (mRemindersHandle);
- SetListBoxChoice (mRemindersHandle, mData.GetReminderChoice);
-
- mAddHandle := GetNewControl (CNTL_Add, window);
- SetWindowItemFont (mAddHandle, wftb, 5);
- SetDefaultState (mAddHandle, true);
-
- mEditHandle := GetNewControl (CNTL_Edit, window);
- SetWindowItemFont (mEditHandle, wftb, 6);
-
- mDeleteHandle := GetNewControl (CNTL_Delete, window);
- SetWindowItemFont (mDeleteHandle, wftb, 7);
-
- errCode := AdvanceKeyboardFocus (window);
-
- ShowWindow (window);
- end;
-
- {----------}
- Procedure MainWindow.Close;
- begin
- mData.RemoveResponder (self);
-
- AMReminderDoc (mDoc).mMainWindowPtr := nil;
- SetInfo (nil);
- HideWindow (mWindow);
- DisposeWindow (mWindow);
-
- Dispose (self);
- end;
-
- {----------}
- Procedure MainWindow.BuildRemindersList (
- inControl: ControlHandle);
- var
- list: ListHandle;
- begin
- list := GetListHandle (inControl);
- AddToList ("One", list);
- AddToList ("Two", list);
- AddToList ("Three", list);
- AddToList ("Infinity", list);
-
- end;
-
- {----------}
- Procedure MainWindow.Control (
- whichControl: ControlHandle;
- whichPart: integer;
- where: Point);
- var
- bounds: Rect;
- newValue: integer;
- partcode: SInt16;
- begin
- ExitCurField ();
-
- if whichControl = mRemindersHandle then begin
- if TrackClick (mRemindersHandle, where) then begin
- mData.SetReminderChoice (GetListBoxChoice (mRemindersHandle));
- end;
- end;
- if whichControl = mAddHandle then begin
- if TrackClick (mAddHandle, where) then begin
- DoAddReminder;
- end;
- end;
- if whichControl = mEditHandle then begin
- if TrackClick (mEditHandle, where) then begin
- DoEditReminder;
- end;
- end;
- if whichControl = mDeleteHandle then begin
- if TrackClick (mDeleteHandle, where) then begin
- DoDeleteReminder;
- end;
- end;
- end;
-
- {----------}
- Procedure MainWindow.DataChanged (
- inDataID: longint);
- begin
- End;
-
- {----------}
- Procedure MainWindow.MouseIn (
- where: Point;
- modifiers: integer);
- var
- bounds: Rect;
- begin
- end;
-
- {----------}
- Procedure MainWindow.ExitCurField;
- var
- errCode: OSErr;
- focus: ControlHandle;
- begin
- errCode := GetKeyboardFocus (mWindow, focus);
-
- if focus = nil then begin
- { nothing to exit }
-
- end;
- inherited ExitCurField;
- end;
-
- {----------}
- Procedure MainWindow.TypeIn (
- charCode: SInt16);
- var
- ch: char;
- errCode: OSErr;
- focus: ControlHandle;
- keyCode: SInt16;
- partcode: SInt16;
- begin
- errCode := GetKeyboardFocus (mWindow, focus);
-
- ch := chr (charCode);
- if (ch = charEnter)
- | (ch = charReturn) then begin
- ExitCurField;
- SimulateClick (mAddHandle);
- DoAddReminder;
- end else if ch = charEsc then begin
- end else if ch = charTab then begin
- DoTab (BAnd (curEvent.modifiers, optionKey) <> 0);
- end else if focus <> nil then begin
- keyCode := BAnd (curEvent.message, keyCodeMask);
- partcode := HandleControlKey (focus, keyCode, charCode, curEvent.modifiers);
- mDoc.mEngine.SetDirty;
- end else begin
- SysBeep (1);
- end;
- end;
-
- {----------}
- Procedure MainWindow.Resize;
- begin
- { application-specific code to resize items in window }
- end;
-
- {----------}
- Procedure MainWindow.Scroll (
- newValue: integer;
- oldValue: integer);
- begin
- { application-specific code to scroll window }
- if gWhichScroll = vScroll then begin
- end else begin { horizontal }
- end;
- end;
-
- {----------}
- Procedure MainWindow.DoUndo;
- begin
- end; {DoUndo}
-
- {----------}
- Procedure MainWindow.DoCut;
- var
- curTE: TEHandle;
- begin
- curTE := GetCurTE ();
-
- if curTE <> nil then begin
- TECut (curTE);
- mDoc.mEngine.SetDirty;
- scrapDirty := true;
- end;
- end; {DoCut}
-
- {----------}
- Procedure MainWindow.DoCopy;
- var
- curTE: TEHandle;
- begin
- curTE := GetCurTE ();
-
- if curTE <> nil then begin
- TECopy (curTE);
- scrapDirty := true;
- end;
- end; {DoCopy}
-
- {----------}
- Procedure MainWindow.DoPaste;
- var
- curTE: TEHandle;
- begin
- curTE := GetCurTE ();
-
- if curTE <> nil then begin
- TEPaste (curTE);
- mDoc.mEngine.SetDirty;
- end;
- end; {DoPaste}
-
- {----------}
- Procedure MainWindow.DoClear;
- var
- curTE: TEHandle;
- begin
- curTE := GetCurTE ();
-
- if curTE <> nil then begin
- TEDelete (curTE);
- mDoc.mEngine.SetDirty;
- end;
- end; {DoClear}
-
- {----------}
- Procedure MainWindow.DoSelectAll;
- var
- curTE: TEHandle;
- begin
- curTE := GetCurTE ();
-
- if curTE <> nil then begin
- TESetSelect (0, 32767, curTE);
- end;
- end; {DoSelectAll}
-
- {----------}
- Procedure MainWindow.DoShowClipboard;
- begin
- end; {DoShowClipboard}
-
- {----------}
- Procedure MainWindow.DoAddReminder;
- var
- data: DReminder;
- begin
- data := NewDReminder;
-
- { add your code to set data fields }
-
- if GetAdd (data) then begin
- { do something with data }
- end;
- Dispose (data);
- end;
-
- {----------}
- Procedure MainWindow.DoEditReminder;
- var
- data: DReminder;
- begin
- data := NewDReminder;
-
- { add your code to set data fields }
-
- if GetAdd (data) then begin
- { do something with data }
- end;
- Dispose (data);
- end;
-
- {----------}
- Procedure MainWindow.DoDeleteReminder;
- var
- begin
-
- end;
-
- {----------}
- Function MainWindow.DoCommand (
- inCommand: longint): Boolean;
- begin
- DoCommand := true;
- case inCommand of
- cmdUndo:
- DoUndo;
- cmdCut:
- DoCut;
- cmdCopy:
- DoCopy;
- cmdPaste:
- DoPaste;
- cmdClear:
- DoClear;
- cmdSelectAll:
- DoSelectAll;
- cmdShowClipboard:
- DoShowClipboard;
- cmdAddReminder:
- DoAddReminder;
- cmdEditReminder:
- DoEditReminder;
- cmdDeleteReminder:
- DoDeleteReminder;
-
- otherwise
- DoCommand := false;
- end; {case}
- end;
-
- end.
-